home *** CD-ROM | disk | FTP | other *** search
/ MacFormat 1995 April / macformat-023.iso / Shareware City / Developers / SliderCDEF1.3.0 / SliderDemo.c < prev    next >
Encoding:
C/C++ Source or Header  |  1994-11-20  |  7.4 KB  |  276 lines  |  [TEXT/MMCC]

  1. // =================================================================================
  2. //    SliderDemo.c                                ©1993-1994 Harold Ekstrom. All rights reserved.
  3. // =================================================================================
  4.  
  5. #define rHSlider1        1000
  6. #define rHSlider2        1001
  7. #define rHSlider3        1002
  8. #define rHSlider4        1003
  9. #define rHSlider5        1004
  10. #define rHWindow        1000
  11. #define rVSlider1        1100
  12. #define rVSlider2        1101
  13. #define rVSlider3        1102
  14. #define rVSlider4        1103
  15. #define rVWindow        1100
  16. #define rAboutDialog        128
  17. #define rMenuBar        128
  18. #define mAppleMenu        128
  19. #define iAboutItem        1
  20. #define mFileMenu        129
  21. #define iQuitItem        1
  22.  
  23. Boolean gQuit = false;
  24.  
  25. void
  26. main( void )
  27. {
  28.     DialogPtr        aboutDialog;
  29.     EventRecord    theEvent;
  30.     WindowPtr    hWindow;
  31.     WindowPtr    vWindow;
  32.     WindowPtr    theWindow;
  33.     ControlHandle    hSlider1, hSlider2, hSlider3, hSlider4, hSlider5;
  34.     ControlHandle    vSlider1, vSlider2, vSlider3, vSlider4;
  35.     ControlHandle    theControl;
  36.     short        part;
  37.     Point            pt;
  38.     short        itemHit;
  39.     Handle        mBarHnd;
  40.     MenuHandle    menuHnd;
  41.     Str255        daName;
  42.     char            theChar;
  43.     long            choice;
  44.     short        menu;
  45.     short        item;
  46.     Rect            rect;
  47.     
  48.     // Initialize the managers.
  49.     InitGraf( &qd.thePort );
  50.     InitFonts();
  51.     InitWindows();
  52.     InitMenus();
  53.     TEInit();
  54.     InitDialogs( nil );
  55.     InitCursor();    
  56.  
  57.     // Install the demo's menubar.
  58.     mBarHnd = GetNewMBar( rMenuBar );
  59.     SetMenuBar( mBarHnd );
  60.     menuHnd = GetMenuHandle( mAppleMenu );
  61.     AppendResMenu( menuHnd, 'DRVR' ); 
  62.     DrawMenuBar();
  63.  
  64.     // Create a black&white window.
  65.     vWindow = GetNewWindow( rVWindow, nil, (WindowPtr) -1L );
  66.     SetPort( vWindow) ;
  67.     vSlider1 = GetNewControl( rVSlider1,  vWindow );
  68.     HiliteControl( vSlider1, 255 );
  69.     vSlider2 = GetNewControl( rVSlider2,  vWindow );
  70.     HiliteControl( vSlider2, 255 );
  71.     vSlider3 = GetNewControl( rVSlider3,  vWindow );
  72.     HiliteControl( vSlider3, 255 );
  73.     vSlider4 = GetNewControl( rVSlider4,  vWindow );
  74.     HiliteControl( vSlider4, 255 );
  75.  
  76.     // Create a color window.
  77.     hWindow = GetNewCWindow( rHWindow, nil, (WindowPtr) -1L );
  78.     SetPort( hWindow) ;
  79.     hSlider1 = GetNewControl( rHSlider1,  hWindow );
  80.     hSlider2 = GetNewControl( rHSlider2,  hWindow );
  81.     hSlider3 = GetNewControl( rHSlider3,  hWindow );
  82.     hSlider4 = GetNewControl( rHSlider4,  hWindow );
  83.     hSlider5 = GetNewControl( rHSlider5,  hWindow );
  84.  
  85.     // Event loop.
  86.     while( !gQuit ) {
  87.  
  88.         if ( WaitNextEvent( everyEvent, &theEvent, 1, nil ) ) {
  89.             
  90.             switch( theEvent.what ) {
  91.             
  92.                 case mouseDown:
  93.                     
  94.                     // Find the window part clicked on.
  95.                     part = FindWindow( theEvent.where, &theWindow );
  96.                     
  97.                     switch( part ) {
  98.                         
  99.                         case inDrag:
  100.                             // Drag the window.
  101.                             rect = (**(GetGrayRgn())).rgnBBox;
  102.                             DragWindow( theWindow, theEvent.where, &rect );
  103.                             break;
  104.                         
  105.                         case inContent:
  106.                             if ( theWindow != FrontWindow() ) {
  107.                                 
  108.                                 // Bring the window to the front.
  109.                                 SelectWindow( theWindow );
  110.                             
  111.                             } else {
  112.                             
  113.                                 // Set the port.
  114.                                 SetPort( theWindow );
  115.                                 
  116.                                 // Convert the point to local coordinates.
  117.                                 pt = theEvent.where;
  118.                                 GlobalToLocal( &pt );
  119.                                 
  120.                                 // Find the control part clicked on (if any).
  121.                                 part = FindControl( pt, theWindow, &theControl );
  122.                                 if ( part != 0 ) {
  123.                                     
  124.                                     // Track the control. Be sure to pass -1 for the
  125.                                     // action proc to get default paging.
  126.                                     TrackControl( theControl, pt, (ControlActionUPP) -1 );
  127.                                     
  128.                                 }
  129.                             }
  130.                             break;
  131.                             
  132.                         case inMenuBar:
  133.                             // Get the menu and item.
  134.                             choice = MenuSelect( theEvent.where );
  135.                             menu = HiWord( choice );
  136.                             item = LoWord( choice );
  137.                             switch( menu ) {
  138.                                 case mAppleMenu:
  139.                                     if ( item == iAboutItem ) {
  140.                                         theWindow = FrontWindow();
  141.                                         SetPort( theWindow );
  142.                                         if ( theWindow == hWindow ) {
  143.                                             HiliteControl( hSlider1, 255 );
  144.                                             HiliteControl( hSlider2, 255 );
  145.                                             HiliteControl( hSlider3, 255 );
  146.                                             HiliteControl( hSlider4, 255 );
  147.                                             HiliteControl( hSlider5, 255 );
  148.                                         } else {
  149.                                             HiliteControl( vSlider1, 255 );
  150.                                             HiliteControl( vSlider2, 255 );
  151.                                             HiliteControl( vSlider3, 255 );
  152.                                             HiliteControl( vSlider4, 255 );
  153.                                         }
  154.                                         aboutDialog = GetNewDialog( rAboutDialog, nil, (WindowPtr) -1L );
  155.                                         if ( aboutDialog != nil ) {
  156.                                             SetDialogDefaultItem( aboutDialog, ok );
  157.                                             ((GrafPtr)aboutDialog)->txFont = geneva;
  158.                                             ((GrafPtr)aboutDialog)->txSize = 9;
  159.                                             itemHit = 0;
  160.                                             while ( itemHit != ok ) {
  161.                                                 ModalDialog( nil, &itemHit );
  162.                                             }
  163.                                             DisposeDialog( aboutDialog );
  164.                                         }
  165.                                         SetPort( theWindow );
  166.                                         if ( theWindow == hWindow ) {
  167.                                             HiliteControl( hSlider1, 0 );
  168.                                             HiliteControl( hSlider2, 0 );
  169.                                             HiliteControl( hSlider3, 0 );
  170.                                             HiliteControl( hSlider4, 0 );
  171.                                             HiliteControl( hSlider5, 0 );
  172.                                         } else {
  173.                                             HiliteControl( vSlider1, 0 );
  174.                                             HiliteControl( vSlider2, 0 );
  175.                                             HiliteControl( vSlider3, 0 );
  176.                                             HiliteControl( vSlider4, 0 );
  177.                                         }
  178.                                     } else {
  179.                                         GetMenuItemText( GetMenuHandle( mAppleMenu ),
  180.                                             item, daName );
  181.                                         OpenDeskAcc( daName );
  182.                                     }
  183.                                     break;
  184.                                     
  185.                                 case mFileMenu:
  186.                                     if ( item == iQuitItem ) {
  187.                                         gQuit = true;
  188.                                     }
  189.                                     break;
  190.                             }
  191.                             HiliteMenu( 0 );
  192.                             break;
  193.                     }
  194.                     break;
  195.  
  196.                 case autoKey:
  197.                 case keyDown:
  198.                     // Get the key.
  199.                     theChar = theEvent.message & charCodeMask;
  200.                     if ( ( theEvent.modifiers & cmdKey ) != 0 ) {
  201.                     
  202.                         // Handle the menu command.
  203.                         choice = MenuKey( theChar );
  204.                         menu = HiWord( choice );
  205.                         item = LoWord( choice );
  206.                         if ( menu == mFileMenu && item == iQuitItem ) {
  207.                             gQuit = true;
  208.                         }
  209.                         
  210.                     } 
  211.                     break;
  212.  
  213.                 case activateEvt:
  214.                     // Get the window from the event's message field.
  215.                     theWindow = (WindowPtr) theEvent.message;
  216.                     
  217.                     if ( theEvent.modifiers & activeFlag != 0 ) {
  218.                         if ( theWindow == hWindow ) {
  219.                             HiliteControl( hSlider1, 0 );
  220.                             HiliteControl( hSlider2, 0 );
  221.                             HiliteControl( hSlider3, 0 );
  222.                             HiliteControl( hSlider4, 0 );
  223.                             HiliteControl( hSlider5, 0 );
  224.                         } else {
  225.                             HiliteControl( vSlider1, 0 );
  226.                             HiliteControl( vSlider2, 0 );
  227.                             HiliteControl( vSlider3, 0 );
  228.                             HiliteControl( vSlider4, 0 );
  229.                         }
  230.                     } else {
  231.                         if ( theWindow == hWindow ) {
  232.                             HiliteControl( hSlider1, 255 );
  233.                             HiliteControl( hSlider2, 255 );
  234.                             HiliteControl( hSlider3, 255 );
  235.                             HiliteControl( hSlider4, 255 );
  236.                             HiliteControl( hSlider5, 255 );
  237.                         } else {
  238.                             HiliteControl( vSlider1, 255 );
  239.                             HiliteControl( vSlider2, 255 );
  240.                             HiliteControl( vSlider3, 255 );
  241.                             HiliteControl( vSlider4, 255 );
  242.                         }
  243.                     }
  244.                     break;
  245.  
  246.                 case updateEvt:
  247.                     // Get the window from the event's message field.
  248.                     theWindow = (WindowPtr) theEvent.message;
  249.                     
  250.                     // Begin updating.
  251.                     BeginUpdate( theWindow );
  252.                     
  253.                     // Update the window's control (the slider).
  254.                     DrawControls( theWindow );
  255.                     
  256.                     // Update text.
  257.                     SetPort( theWindow );
  258.                     TextFont( geneva );
  259.                     TextSize( 9 );
  260.                     TextFace( underline + bold );
  261.                     if ( theWindow == hWindow ) {
  262.                         MoveTo( 147, 15 );
  263.                         DrawString( "\pColor" );
  264.                     } else if ( theWindow == vWindow ) {
  265.                         MoveTo( 66, 15 );
  266.                         DrawString( "\pBlack&White" );
  267.                     }
  268.  
  269.                     // End updating.
  270.                     EndUpdate( theWindow );
  271.                     break;
  272.             }
  273.         }
  274.     }
  275. }
  276.